Progetto d'esame
Obiettivo
Sviluppare un metodo di generazione di immagini interattive, o comunque diverse a ogni esecuzione, partendo da una serie di input esterni come, ad esempio, collezioni di dati statistici, informazioni ricavate da servizi online, testi letterari, dati provenienti da sensori, file audio, ecc.. Possono essere usati anche file grafici (bitmap o file vettoriali 2D e 3D) ma i dati devono essere comunque rielaborati e non possono essere semplicemente visualizzati con qualche trasformazione standard.
Il progetto dovrà essere sottoposto al docente e accettato da quest'ultimo in base alla coerenza con gli argomenti del corso e al livello di difficoltà tecnica. Eventuali variazioni rispetto alle specifiche (progetto particolare, lavoro di gruppo, ecc.) dovranno essere comunicate al docente per verificarne l'idoneità.
Il lavoro dovrà inoltre essere accompagnato da una relazione che ne documenti il percorso progettuale secondo le indicazioni riportate più avanti.
Specifiche del lavoro
Il progetto dovrà essere sviluppato in p5.js con l'eventuale aiuto di software di elaborazione dei file di input.
Strumenti
- p5.js [come strumento/linguaggio principale]
- Atom o un altro editor di codice [per realizzare e controllare meglio i file del progetto]
- OpenProcessing [per realizzare velocemente delle "bozze" o condividere le prove]
- eventuali editor di immagini, audio, dati, ecc. [per preparare o ripulire eventuali file caricati dallo sketch]
Per lo sketch definitivo o per quelli intermedi (prove tecniche o grafiche) si consiglia di partire dagli sketch di base.
Indicazioni tecniche
- risoluzione di almeno 720x720 pixel, preferibilmente con codice che si adatti alle diverse risoluzioni, compreso l'eventuale fullscreen [vedi _fullpage-example fra gli "sketch di base"].
Specifiche della relazione
Contenuti (a titolo puramente indicativo)
- titolo del progetto, studente/i e corso (obbligatori);
- idee di partenza e obiettivi;
- casi simili trovati in Rete o in testi specifici;
- eventuale sketch da cui si è partiti (obbligatorio: la mancanza dei riferimenti verrà considerata un tentativo di plagio e invaliderà l'esame);
- analisi dei problemi progettuali ed esecutivi;
- prove grafiche che dimostrino la ricerca della soluzione estetica migliore;
- descrizione delle soluzioni adottate;
- crediti relativi a materiale non autoprodotto (librerie, musiche, ecc.);
- fonti citate o considerate (testi, siti, animazioni, video, videogiochi, ecc.).
Indicazioni tecniche
- lunghezza di almeno 8 pagine (inclusi schemi, immagini e parti di codice), 16 (per lavoro di coppia) o 24 (per gruppo di 3 studenti);
- esportato in formato PDF [ottenibile direttamente anche attraverso LibreOffice].
Non viene richiesto un lavoro grafico particolarmente creativo ma devono essere rispettate almeno alcune regole di base dell'impaginazione. Visto che la visualizzazione avverrà su schermo, l'orientamento delle pagine potrà essere anche orizzontale, evitando però i testi a tutta larghezza.
File da consegnare
La consegna degli sketch p5.js andrà fatta in una cartella Dropbox segnalata per tempo dal docente sul gruppo Facebook delle comunicazioni. All'interno di un file compresso andrà inserita una cartella con il cognome e il nome dello studente o i soli cognomi del gruppo. Una possibile strutturazione dei file potrebbe essere:
- COGNOME-NOME
- assets
- BITMAP.png
- AUDIO.mp3
- DATI.json
- libs
- p5.min.js
- p5.dom.min.js
- p5.sound.min.js
- index.html
- sketch.js
- preview.jpg
- NOME-PROGETTO.pdf
- assets
assets
Cartella con gli eventuali file letti dallo sketch. Evitare di inserire anche i file non necessari al funzionamento del codice.
libs
Cartella con la libreria principale di p5.js (o p5.min.js) ed eventuali altre librerie utilizzate.
index.html
File principale con i riferimenti alle librerie e allo sketch. Nel caso il progetto fosse composto di più lavori, può essere utilizzata una strutturazione a sketch multipli mantenendo comunque lo screenshot e la relazione di progetto nella cartella principale. Con un singolo sketch il codice potrebbe essere:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0>
<title>TITOLO DELLO SKETCH</title>
<style>
html, body {
width: 100%;
height: 100%;
}
body {
padding: 0;
margin: 0;
background-color: black; /* colore sfondo pagina */
}
canvas {
display:block;
position: absolute;
width: auto !important;
height: auto !important;
max-width: 100%;
max-height: 100%;
top: 50%;
left: 50%;
margin-right: -50%;
transform: translate(-50%, -50%);
}
canvas:focus {
outline:0;
}
</style>
<script src="libs/p5.min.js"></script> <!-- deve essere il primo -->
<script src="libs/p5.dom.min.js"></script>
<script src="libs/p5.sound.min.js"></script>
<!-- eventuali altre librerie -->
<script src="sketch.js"></script> <!-- deve essere l'ultimo -->
</head>
<body>
</body>
</html>
sketch.js
Codice p5.js in cui gli eventuali riferimenti ai file esterni dovranno essere preceduti dal nome della cartella "assets", ad esempio:
...
function preload() {
img = loadImage( "assets/BITMAP.png" );
snd = loadSound( "assets/AUDIO.mp3" );
dat = loadJSON( "assets/DATI.json" );
...
}
...
preview.jpg
Immagine rappresentativa costituita da uno screenshot/fotogramma della sola area di visualizzazione in un momento significativo.
NOME-PROGETTO.pdf
File della relazione di progetto.
Per ottimizzare le dimensioni dei file, devono essere seguite le indicazioni per l'invio dei file.